# coding:utf-8

from PoboAPI import *


#开始事件，用于初始化一些参数
def OnStart(context) :
    log.info('策略启动...')
    #登录交易账号，需在主页用户管理中设置账号，并把「回测期货」替换成您的账户名称
    context.myacc = None
    if '回测期货' in context.accounts :
        log.info('登录交易账号[回测期货]')
        if context.accounts['回测期货'].Login() :
            context.myacc = context.accounts['回测期货']

#行情初始化事件
def OnMarketQuotationInitialEx(context, exchange, daynight):
    #过滤掉非上期所夜盘的信号
    if exchange != 'SHFE' or daynight != 'night' :
        return
    #获取主力合约
    g.code = GetMainContract('SHFE', 'rb', 20)
    #订阅OnBar事件
    SubscribeBar(g.code, BarType.Day) 
    
#K线事件，当有新的K线生成时调用该事件
def OnBar(context, code, bartype) :
    #过滤掉不需要的通知
    if code != g.code :
        return
    dyndata = GetQuote(g.code)
    #计算均线
    MA = GetIndicator('MA', code, params = (5,10), bar_type = BarType.Day)
    MA1 = MA['MA(5)']
    MA2 = MA['MA(10)']
    if len(MA2) < 2 :
        return
    #MA1上穿MA2时买入螺纹主力10手
    elif MA1[-1] >= MA2[-1] and MA1[-2] < MA2[-2]:
        QuickInsertOrder(context.myacc, g.code, 'buy', 'open', dyndata.now, 10)
    #MA1下穿MA2时卖出平仓
    elif MA1[-1] <= MA2[-1] and MA1[-2] > MA2[-2]:
        QuickInsertOrder(context.myacc, g.code, 'sell', 'close', dyndata.now, 10)
        
